/*----------------------------------------
/	System is the only Instance, determines what state the game is in,
/	and what is doing at a time.
/---------------------------------------*/
#ifndef SYSTEM_H
#define SYSTEM_H

#include "StateMachine.h"

class System
{
public:
	enum STATE {	GS_PREVIOUS = 0,
					GS_INTRO,
					GS_MAIN_MENU,
					GS_NEW_GAME,
					GS_CONTINUE_GAME,
					GS_SETTING,
					GS_EXIT,
					GS_SELECT_LEVEL,
					GS_PRE_GAME,
					GS_RUNNING,
					GS_PAUSE_MENU,
					GS_SCORE_BOARD,
					GS_ENDING
					};
private:
	StateMachine<System>* m_pStateMachine;
	int GameState;
	bool Exit;
	System();
	System(const System&);
public:	
	System* Instance();
	void ChangeState(State<System>*);
	void PreviousState();
	void Update();
	bool IsState(int);
	void SetState(int);
	bool Exit();
	//	State's actions
	void DoIntro();
	void DoMainMenu();
	void DoExitGame();
	void DoNewGame();
};

#endif